package com.nuedu.corejava.ch12;

import java.io.File;

/**
 * <pre>
 * 编写一个程序，能够在指定的目录下查找文件或目录
 * @author admin
 *</pre>
 */
public class FileFinder {
	/**
	 * 编写一个方法，查询指定目录下的文件，找到后返回文件的全路径（绝对路径）
	 * @param basePat
	 * @param fileName
	 * @return
	 */
	public String find(String basePath, String fileName) {
		if (basePath==null || fileName == null) {//没传参数或为null，不执行查询
			return  null;
			
		}
		File base = new File(basePath);
		
		File[] files = base.listFiles();//列出参考目录下的所有文件或目录
		if(files!=null) {
		for(File file : files) {
			if (file.isFile()) {
				String fn = file.getName();
				if (fileName.equals(fn)) {//找到匹配文件
					return file.getAbsolutePath();//返回文件的全路径
				}
			}else {
				//System.out.println("不是文件: "+file.getAbsolutePath());
				String f =  find(file.getAbsolutePath(), fileName);//递归调用
				if (f!=null) {//递归中断条件
					return f;
				}
			}
		}
		}
		return null;
		
	}
	public static void main(String[] args) {
		String pathString = "D:\\";
		String file = "Triangle.java";
		long start = System.currentTimeMillis();
		System.out.println("正在搜索文件");
		               //匿名对像
		String result = new FileFinder().find(pathString, file);
		if (result!=null) {
			System.out.println("找到一个文件："+result);
		}else {
			System.out.println("找不到文件");
		}
		long stop = System.currentTimeMillis();
		System.out.println("搜索时间(秒)： "+(stop-start)/1000);
		//查询出系统所有盘符，进行全盘搜索
				File[] roots =File.listRoots();
				for(File file2 :roots) {
					System.out.println(file2.getAbsolutePath());
					result=new FileFinder().find(file2.getAbsolutePath(), "Timsh.tpc");
				}
				stop=System.currentTimeMillis();
				System.out.println("执行时间"+(stop-start)/100);
				
	}

}
